<?php
namespace Admin\Controller;

/**
 * 权限管理之管理员信息操作类
 * Class AdminController
 * @package Admin\Controller
 */
class AdminController extends CommonController
{
    /**
     * 管理员列表显示
     */
    public function listAdmin()
    {
        // 查询所有的管理员
        $count = M('Admin')->count();
        $page = getpage($count,10);
        $show = $page->show();
        $adminlist = M('Admin')->order('admin_id desc')->limit($page->firstRow.','.$page->listRows)->select();
        
        $this->assign('count', $count);
        $this->assign('adminlist', $adminlist);
        $this->assign('page',$show);
        $this->display('admin_list');
    }

    /**
     * 添加管理员帐号
     */
    public function addAdmin()
    {
        if (IS_POST) {
            $adminModel = D('Admin/Admin');

            if ($adminModel->create(I('post.'), 1)) {
                if ($adminModel->add()) {
                    $this->success('添加管理帐号成功!');
                    exit;
                }
            }
            $this->error($adminModel->getError());
        }
        // 查询所有角色
        $roleData = M('Role')->select();
        $this->assign('roleData', $roleData);
        $this->display('add_admin');
    }

    /**
     * 修改管理帐号
     */
    public function editAdmin()
    {
        $admin_id = I('admin_id', 0, 'intval');
        if ($admin_id <= 0) {
            $this->error('admin_id丢失');
        }
        if (IS_POST) {
            $adminModel = D('Admin/Admin');
            if ($adminModel->create(I('post.'), 2)) {
                if ($adminModel->where('admin_id=' . $admin_id)->save() !== false) {
                    $this->success('修改帐号信息成功!');
                    exit;
                }
            }
            $this->error($adminModel->getError());
        }
        $adminId = intval(session('admin_id'));
        // 如果是普通管理员要修改其他管理员的信息提示无权
        if ($adminId > 1 && ($adminId !== $admin_id)) $this->error('抱歉,无权修改其他管理员的帐号信息!');

        $adminInfo =  M('Admin')->where('admin_id=' . $admin_id)->find();
        
        // 取出所有的角色
        /*$roleModel = M('Role');
        $roleData  = $roleModel->select();
        // 取出当前管理员所在的角色的ID
        $arModel  = M('AdminRole');
        $rids     = $arModel->field('role_id')->where(array('admin_id'=>array('eq', $admin_id)))->select();
        $role_ids = array();
        foreach ($rids as $rid) {
            $role_ids[] = $rid['role_id']; 
        }*/
//        $role_ids_str = implode(',', $role_ids);
        $this->assign('adminInfo', $adminInfo);
//        $this->assign('roleData', $roleData);
//        $this->assign('rids', $role_ids_str);
        $this->display('edit_admin');
    }

    /**
     * 删除管理帐号
     */
    public function ajaxDeleteAdmin()
    {
        if (IS_AJAX) {
            // 超级管理员帐号禁止删除
            $admin_id = I('get.admin_id', 0, 'intval');
            $adminModel = M('Admin');
            $res = $adminModel->where('admin_id=' . $admin_id)->delete();
            if ($res !== false) {
                $this->success('管理员帐号删除成功!', '', true);
            } else {
                $this->error($adminModel->getError(), '', true);
            }
        }
    }

    /**
     * AJAX修改用户状态
     */
    public function ajaxUpdateStatus()
    {
        if (IS_AJAX) {
            $adminId = I('get.admin_id');
            if ($adminId == 1) {
                $this->error('无法对超级管理员执行此操作');
            }
            // 非超级管理员禁止修改他人帐号状态
            $myId = session('admin_id');
            if ($adminId != $myId && $myId > 1) {
                $this->error('抱歉,无权修改其他管理员的状态!');
            }
            $adminModel = M('Admin');
            $info = $adminModel->find($adminId);
            // 如果当前已经启用则修改为禁用，反之相同操作
            if (!empty($info) && $info['status'] == 1 ) {
                $adminModel->where(array('admin_id'=>array('eq', $adminId)))->setField('status', 0);
                $info = array('info'=>'帐号已启用', 'status'=>0, 'url'=>'');
            } elseif (!empty($info) && $info['status'] == 0) {
                $adminModel->where(array('admin_id'=>array('eq', $adminId)))->setField('status', 1);
                $info = array('info'=>'帐号已禁用', 'status'=>1, 'url'=>'');
            } else {
                 $info = array('info'=>'帐号状态操作失败', 'status'=>-1, 'url'=>'');
            }
            $this->ajaxReturn($info);
        }
    }
}
